// models/image_model.go
package models

import (
	"fmt"
	"github.com/sirupsen/logrus"
	"gorm.io/gorm"
	"muziai-server/global"
	"os"
)

type ImageModel struct {
	Model
	UserID    uint      `json:"userID"`
	UserModel UserModel `gorm:"foreignKey:UserID" json:"-"`
	Filename  string    `gorm:"size:64" json:"filename"`
	FilePath  string    `gorm:"size:256" json:"filePath"`
	Hash      string    `gorm:"size 64" json:"hash"`
	Size      int64     `json:"size"` // 单位是字节
}

func (i ImageModel) WebPath() string {
	return fmt.Sprintf("/%s", i.FilePath)
}
func (i ImageModel) BeforeDelete(tx *gorm.DB) (err error) {
	// 只要最后一个文件hash的时候，才去删文件
	var identicalHashesCount int64
	global.DB.Model(ImageModel{}).Where("hash = ?", i.Hash).Count(&identicalHashesCount)

	if identicalHashesCount == 1 {
		// 相当于是最后一个文件，
		err = os.Remove(i.FilePath)
		if err != nil {
			logrus.Error(err)
		}
	}
	return nil

}
